Micron Document

Destination
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

A destination is an endpoint in a Reticulum network that can be addressed and communicated with.

As the name implies, it's the destination of packets. Applications create destinations to receive and send data. By announcing their existence, they become reachable from anywhere in the network.

Destinations correspond roughly to IP addresses + ports in TCP/IP, but represent a fundamental shift from location-based addressing to identity-based addressing.cite-ref-1[1] Any destination in the network can be reached by knowing only its hash. (And the public key of its identity for single destinations, but if the public key is not known, it can be requested from the network.)

Destinations are portable. They are allowed to move around the network, even across networks. After moving to a new location in the network topology, it only has to broadcast a new announce, and after a short while, it will be globally reachable again.

Contents

Types
Hash
Usage

Types

Single – Always encrypted, identified by a unique public key, with initiator anonymity. The most common type. Multi-hop.
Plain – Unencrypted, suitable for public broadcast information. Single-hop.
Group – Symmetrically encrypted, readable by anyone with the key. Single-hop. (Multi-hop group communication is planned.)
Link – A secure channel to a single destination providing reliability, forward secrecy, large data transfers and more. A special type. Multi-hop.

Hash

Destinations are represented by an immutable 16-byte hash derived from truncating a full SHA-256 hash of the destination's identifying characteristics. It is displayed as hexadecimal bytes, for example: 13425ec15b621c1d928589718000d814

More specifically, it's a hash of a dotted notation of the destination's app name and aspects, for example: appname.remotesensor.temperature

In the case of single destinations, the identity hash is also included, ensuring that even though two destinations have the same aspects, their hashes will be unique.

name_hash = truncate(SHA256(dotnotate(app_name, aspect1, aspect2, …)))
single_destination_hash = truncate(SHA256(concatenate(name_hash, identity_hash)))

Aspects

A destination has one or more aspects. Aspects are a destination's human-readable name, making it easy to structure applications and filter what data they receive. There is no limit to the amount or length of aspects, as destinations are always represented by the truncated hash on the network.

Usage

See this code example ↗ in the manual, showing how to create two single destinations.

See also

Path
rnid

References

cite-note-11. Death To The Address, Manual. a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu

Reticulum concepts

AnnounceBlackholeBufferChannel • Destination • DiscoveryIdentityInstanceInterfaceInterface Access Code (IFAC) • LinkNetwork identityNodePacketPathPropagation nodeResourceStampTransport node

Destination